﻿using System;

namespace Lesson14_练习题
{
    class Program
    {
        static void Main(string[] args)
        {
            //定义一个数组 长度20 每项随机1~100之间的整数
            //用选择排序分别升序打印与降序打印
            int[] arr = new int[20];
            Random random = new Random();
            for (int i = 0; i < arr.Length; i++)
            {
                arr[i] = random.Next(1,101);
            }
            //打印原数组
            for (int i = 0;i < arr.Length; i++)
            {
                Console.Write(arr[i] + " ");
            }
            Console.WriteLine();
            //申明布尔类型变量 表示是否使用升序打印（Ascending Order即升序）
            Console.WriteLine("请选择进行升序or降序打印(true:升序 false:降序):");
            bool isAscendingOrder = bool.Parse(Console.ReadLine());
            
            int index;
            int temp;
            for (int i = 0; i < arr.Length - 1; i++)
            {
                index = 0;
                for (int j = 1; j < arr.Length - i; j++)
                {
                    //使用三目运算符判断排序方式
                    if (isAscendingOrder ? arr[index] < arr[j] : arr[index] > arr[j])
                    {
                        index = j;
                    }
                }

                //注意此处是arr.Length - 1 - i
                if(index == arr.Length - 1 - i)
                {
                    continue;
                }
                //注意此处是arr.Length - 1 - i
                temp = arr[index];
                arr[index] = arr[arr.Length - 1 - i];
                arr[arr.Length - 1 - i] = temp;
            }
            //排序完成 打印
            for (int i = 0; i < arr.Length; i++)
            {
                Console.Write(arr[i] + " ");
            }
        }
    }
}